# 构造一个基类“学生” ，包含“学习”方法。
# - 构造继承类“计算机专业学生”，包含方法“编程”。
# - 构造继承类“金融专业学生”，包含方法“金融交易”。
# - 构造不同类的对象，对各自方法进行调用

# class Student():
#
#     def study(self):
#         print("学生努力学习！")
#
# class ComputerStudent(Student):
#
#     def program(self):
#         print("计算机专业学生会写代码！")
#
# class FinanceStudent(Student):
#
#     def financeTransact(self):
#         print("金融专业学生会炒股！")
#
# student1 = Student()
# student1.study()
# student2 = ComputerStudent()
# student2.program()
# student3 = FinanceStudent()
# student3.financeTransact()

# 构造一个基类“学生” ，包含“学习”方法。
#
# - 构造继承类“计算机专业学生”，重新实现方法“学习”，增加方法“睡觉”。
# - 构造继承类“金融专业学生”，重新实现方法“学习”，增加方法“睡觉”。
# - 构造一个函数fun，能够调用基类“学生”的方法
# - 构造不同类的对象，将其作为函数fun的参数，并在fun内调用其方法
# class Student():
#
#     def study(self):
#         print("学生努力学习！")
#
# class ComputerStudent(Student):
#
#     def program(self):
#         print("计算机专业学生会写代码！")
#
#     def study(self):
#         print("计算机专业学生努力学习编程！")
#
#     def sleepDemo(self):
#         print("计算机专业学生写代码写的睡觉了！")
#
# class FinanceStudent(Student):
#
#     def financeTransact(self):
#         print("金融专业学生会炒股！")
#
#     def study(self):
#         print("金融专业学生学习炒股想成为巴菲特！")
#
#     def sleepDemo(self):
#         print("金融专业学生做梦都在想发财！")
#
# def fun(obj):
#     Student.study(obj)
#
# student1 = ComputerStudent()
# student1.study()
# fun(student1)

# 按照要求完成
#
# - 用户输入姓名、年龄、性别
# - 实例化对象
# - 用户任意输入内容
#   - 如果输入的是属性名 打印属性值
#   - 如果输入的是方法名(callable(getattr(xiaoyu, "eat"))可以判断是否是方法) 调用方法
#   - 如果输入的什么都不是 不做操作

class User:
    def __init__(self, name, age, sex):
        self.name = name
        self.age  = age
        self.sex  = sex
    def eat(self):
        print("在吃宵夜！！！")
    def sleep(self):
        print("在睡觉！！！")


def func():
    name = input("请输入姓名：")
    age = input("请输入年龄：")
    sex = input("请输入性别：")
    user = User(name, age, sex)
    while True:
        key = input("请输入内容，退出请按*：")
        if key == '*':
            break
        elif hasattr(user, key):
            if callable(getattr(user, key)):
                getattr(user, key)()
            else:
                print("属性{}的值为：{}".format(key, getattr(user, key)))
        else:
            print("输入异常，请重新输入！")

if __name__ == '__main__':
    func()